<?php
	require_once('model/User.php');
	require_once('model/Car.php');
	/*echo "<pre>";
	print_r($_SESSION);*/
	
	final class UserController extends Controller {
		public function Profile() {
			if(!isset($_SESSION['userid'])) {
				$this->Redirect('/user/register');
				return;
			}
		}

		public function Login() {
			if($this->params['subaction']=='check') {
				$this->LoginCheck();
				return;
			}
			$this->LoginForm();
		}

		protected function LoginForm() {
			$this->styleparams['login-error'] = '';
			$this->stylesheet = 'login-form';

		}

		protected function LoginCheck() {
			$query=sprintf("SELECT `Id` from `User` WHERE `login`='%s' AND `password`='%s'", mes($this->request['login']), sha1($this->request['password']));
			$res = mysql_query($query);
            $row = mysql_fetch_array($res);
			if($row[0]>0){ 
				$_SESSION['userid']=$row[0];
				$this->RedirectBack();
			}
			else{
				$this->styleparams['login-error'] = 'Ошибка авторизации';			
				$this->RedirectBack();
			}
		}

		public function Logout() {
			unset($_SESSION['userid']);
			$this->RedirectBack();
			
		}

		public function Register() {
			if(isset($_SESSION['userid'])) {
				$this->Redirect('/user');
				return;
			}

			if($this->params['subaction']=='check') {
				$this->RegisterCheck();
				return;
			}
			$this->RegisterForm();
		}

		/**
		 * Показать форму регистрации
		 */
		protected function RegisterForm() {
						
			$this->styleparams['registration-error'] = '';
			$this->stylesheet = 'register-form';
		}

		/**
		 *  Отправляем обратно заполненые поля, чтобы пользователя не мучать
		 */
		protected function RegisterFormFields() {
			$fields = array('login', 'email', 'telephone', 'family', 'name', 'fname', 'city');
			foreach($fields as $field) {
				if(isset($this->request[$field]))
					$this->styleparams[$field] = $this->request[$field];
			}
		}

		/**
		 * Попытка регистрации
		 * TODO: добавить поле city, в форму и в проверку и в сохранение   
		 */
		protected function RegisterCheck() {
			//die(var_export($this->request, true));

			// указываем рабочий шаблон
			$this->stylesheet = 'register-form';
			// ошибок по-умолчанию нет
			$this->styleparams['registration-error'] = '';

			/********* Start: Проверка полей *********/
			if(strlen($this->request['login'])<1) {
				$this->RegisterFormFields();
				$this->styleparams['registration-error'] = 'Укажите логин пожалуйста';
				return;
			}

			if(strlen($this->request['password'])<6) {
				$this->RegisterFormFields();
				$this->styleparams['registration-error'] = 'Пароль должен быть длинее 5 символов';
				return;
			}

			if($this->request['password']!=$this->request['repassword']) {
				$this->RegisterFormFields();
				$this->styleparams['registration-error'] = 'Пароли не совпадают';
				return;
			}
			/********* Finish: Проверка полей *********/

			/******** Start: Регистрация пользователя *******/
			$user = new User();
			$user->Login($this->request['login']);
			$user->SetPassword($this->request['password']);
			$user->Status(USER_STATUS_DEFAULT);
			$user->Name($this->request['name']);
			$user->Family($this->request['family']);
			$user->Fname($this->request['fname']);
			$user->Email($this->request['email']);
			$user->Telephone($this->request['telephone']);
			$user->City($this->request['city']);

			try {
				$user->Save();
			} catch (UserDuplicateException $e) {
				$this->RegisterFormFields();
				$this->styleparams['registration-error'] = 'Указаное имя пользователя уже занято';
				return;
			}
			$this->stylesheet='registration-done';

			/******** Finish: Регистрация пользователя ******/

			// TODO: 	Если мы до сюда дошли, значит надо открыть сессию для пользователя
			//			и редиректнуть его на профиль
		}
	}
?>